<template>
  <div id="container" class="container"></div>
</template>

<script>
import AMapLoader from "@amap/amap-jsapi-loader";
window._AMapSecurityConfig = {
  // 安全密钥
  securityJsCode: "3684ef9a7571deaab4b328c25ffdce45",
};
export default {
  name: "Mapview",
  props:{
    parentLng: String,
    parentLat: String
  },
  data() {
    return {
      // 地图实例
      map: null,
      // 标记点
      marker: "",
      // 地址逆解析
      geoCoder: null,
      // 搜索提示
      AutoComplete: null,
      // 搜索关键字
      keywords: "",
      // 位置信息
      form: {
        lng: "",
        lat: "",
        address: "",
        adcode: "", //地区编码
      },
      // 搜索节流阀
      loading: false,
      // 搜索提示信息
      options: [],
    };
  },
  methods: {
    initMap() {
      //初始化坐标经度
      // console.log(this.parentLng)
      if(this.parentLng){
        this.form.lng = this.parentLng
      }else{
        this.form.lng = 121.473588
      }
      //初始化坐标纬度
      if(this.parentLat){
        this.form.lat = this.parentLat
      }else{
        this.form.lat = 31.230479
      }
      // console.log("form",this.form)

      AMapLoader.load({
        // 你申请的Key
        key: "7b5577c13418c4dd86bfb9a2bdbc0eaa",
        version: "2.0",
        // 需要用到的插件
        plugins: ["AMap.Geocoder", "AMap.AutoComplete"],
      })
        .then((AMap) => {
          //加载地图
          this.map = new AMap.Map("container", {
            zoom: 10, //初始化地图级别
            center: [this.form.lng,this.form.lat], //初始化地图中心点位置
          });
          // 加载地址逆解析插件
          this.geoCoder = new AMap.Geocoder({
            city: "010", //城市设为北京，默认：“全国”
            radius: 1000, //范围，默认：500
          });
          // 加载搜索提示插件
          this.AutoComplete = new AMap.AutoComplete({ city: "全国" });
          
          // 清除点
          this.removeMarker();
          // 标记初始点
          this.setMapMarker();

          //点击获取经纬度;
          this.map.on("click", (e) => {
            // 获取经纬度
            // console.log(e.lnglat)
            this.form.lng = e.lnglat.lng;
            this.form.lat = e.lnglat.lat;
            // 清除点
            this.removeMarker();
            // 标记点
            this.setMapMarker();
            this.$emit('send-location',this.form)
          });
        })
        .catch((err) => {
          // 错误
          console.log(err);
        });
    },
    // 标记点
    setMapMarker() {
      // 自动适应显示想显示的范围区域
      this.map.setFitView();
      this.marker = new AMap.Marker({
        map: this.map,
        position: [this.form.lng, this.form.lat],
      });
      // 逆解析地址
      this.toGeoCoder();
      this.map.setFitView();
      this.map.add(this.marker);
    },
    // 清除点
    removeMarker() {
      if (this.marker) {
        this.map.remove(this.marker);
      }
    },
    // 逆解析地址
    toGeoCoder() {
      let lnglat = [this.form.lng, this.form.lat];
      this.geoCoder.getAddress(lnglat, (status, result) => {
        if (status === "complete" && result.regeocode) {
          this.form.address = result.regeocode.formattedAddress;
        }
      });
    },
    // 搜索
    remoteMethod(query) {
      // console.log(query);
      if (query !== "") {
        this.loading = true;
        setTimeout(() => {
          this.loading = false;
          this.AutoComplete.search(query, (status, result) => {
            this.options = result.tips;
          });
        }, 200);
      } else {
        this.options = [];
      }
    },
    // 选中提示
    currentSelect(val) {
      // 清空时不执行后面代码
      // console.log("select",val)
      if (!val) {
        return;
      }
      this.form = {
        lng: val.location.lng,
        lat: val.location.lat,
        address: val.district + val.address,
        adcode: val.adcode,
      };
      // 清除点
      this.removeMarker();
      // 标记点
      this.setMapMarker();
    },
  },
  mounted() {
    
    this.initMap();
  },
  created(){
  }
};
</script>

<style>
/* .container {
  width: 100%;
  height: 300px;
} */
#container {
  padding: 0px;
  margin: 0px;
  width: 100%;
  height: 100%;
}
</style>
